#include <iostream>
#include "linkedList.hpp"
using namespace std;

int main()
{
    LinkedList<int> intList;
    intList.show();
    intList.release();

    intList.insertHead(1);
    intList.insertHead(2);
    intList.show();             // 2 1

    intList.insertTail(3);
    intList.insertTail(4);      // 2 1 3 4
    intList.show();

    intList.release();

    LinkedList<float> fList;
    fList.insertTail(1.1);
    fList.insertTail(2.1);
    fList.insertTail(3.1);
    fList.insertTail(4.1);      // 1.1 2.1 3.1 4.1
    fList.show();
    fList.popByIdx(-1);         // 不合法
    fList.popByIdx(5);          // 找不到
    fList.popByIdx(0);        // 2.1 3.1 4.1
    fList.show();
    fList.popByIdx(2);        // 2.1 3.1
    fList.show();

    LinkedList<string> strList;
    strList.insertHead("a");
    strList.insertHead("b");
    strList.insertHead("c");
    strList.insertHead("d");    // d c b a
    strList.show();
    strList.popByVal("e");      // 找不到值
    strList.popByVal("d");      // c b a
    strList.show();
    strList.popByVal("b");      // c a
    strList.show();
    strList.popByVal("a");      // c
    strList.show();
    strList.popByVal("c");      //
    strList.show();
    strList.popByVal("c");      // 链表为空
    cout << "------------------------------" << endl;

    return 0;
}
